/*
    方便在油猴中引入代码，使用直接执行方法。
 */
// ==UserScript==
// @name         任务-自定义任务
// @namespace
// @version      1.2
// @updateURL    https://gitee.com/zzwuweijun/learning_code/raw/master/JavaScript/_%E6%B5%8F%E8%A7%88%E5%99%A8%E6%89%A9%E5%B1%95/%E8%87%AA%E5%AE%9A%E4%B9%89%E6%B2%B9%E7%8C%B4%E8%84%9A%E6%9C%AC/任务-自定义任务.user.js
// @downloadURL  https://gitee.com/zzwuweijun/learning_code/raw/master/JavaScript/_%E6%B5%8F%E8%A7%88%E5%99%A8%E6%89%A9%E5%B1%95/%E8%87%AA%E5%AE%9A%E4%B9%89%E6%B2%B9%E7%8C%B4%E8%84%9A%E6%9C%AC/任务-自定义任务.user.js
// @description  比如每天需要完成的任务-看新闻联播等等
// @author       You
// @icon         http://wuweijun.fun/favicon.ico
// @match        http://*/*
// @match        https://*/*
// @grant GM_setValue
// @grant GM_getValue
// @grant GM_deleteValue
// ==/UserScript==
(function () {
  'use strict';
  // GM_setValue("myisok", "someData");
  // GM_deleteValue("myisok");
  // const myisok = GM_getValue("myisok", null);
  // console.log(`myisok`, myisok)

  // 控制目标和具体的事件
  var data = [
    {
      // hostname: '',  fun:function () {},
      hostname: '', fun: function () {
        /* 每天打开cctv看新闻联播  */
        let isExecutedToday_cctv = GM_getValue("isExecutedToday_cctv", null)
        if (isExecutedToday_cctv != format("YYYY-MM-DD") && Number(format("hh")) > 6) {
          setTimeout(() => {
            if (GM_getValue("isExecutedToday_cctv", null) == format("YYYY-MM-DD")) return;
            let url = 'https://tv.cctv.com/lm/xwlb/index.shtml';
            !location.href.includes(new URL(url).origin) && window.open(url, 'cctvmyUniqueWindow');
            GM_setValue("isExecutedToday_cctv", format("YYYY-MM-DD"));
          }, 10000);
        }
      },
    },
  ]

  for (let index = 0; index < data.length; index++) {
    const element = data[index];
    if (location.href.includes(element.hostname)) {
      try { element.fun && setTimeout(() => { element.fun() }, 10); }
      catch (error) { console.log(error) }
    }
  }

  /**
  * 将指定日期时间或当前日期时间转换成指定的格式。
  * format("YYYY年MM月DD日 hh:mm:ss 星期W") // 2021年03月21日 20:30:14 星期日
  * @fmt {String} 日期格式
  * @timestamp {Date} 标准时间。选填。
  */
  function format(fmt, timestamp) {
    const date = timestamp ? new Date(timestamp) : new Date()
    const o = { "Y+": date.getFullYear(), "M+": date.getMonth() + 1, "D+": date.getDate(), "h+": date.getHours(), "m+": date.getMinutes(), "s+": date.getSeconds(), "W": date.getDay() }
    for (var k in o) {
      if (new RegExp("(" + k + ")").test(fmt)) {
        fmt = fmt.replace(RegExp.$1, () => {
          if (k === 'W') { const week = ['日', '一', '二', '三', '四', '五', '六']; return week[o[k]]; }
          else if (k === 'Y+' || RegExp.$1.length == 1) { return o[k] }
          else { return ("00" + o[k]).substr(("" + o[k]).length) }
        })
      }
    }
    return fmt
  }

})();
